home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 422_02 / dosutil / lzc.c < prev    next >
C/C++ Source or Header  |  1994-03-20  |  3KB  |  115 lines

  1. /*
  2.  * Simple program to perform common operations on a laserjet or
  3.  * compatible printer.
  4.  *
  5.  * If HOTKEYS are specified on the command line, CALC will install
  6.  * itself as a TSR (Ram-Resident) program, which can be invoked at
  7.  * any time by pressing the HOTKEYS. Available HOTKEYS are:
  8.  *        L - Left SHIFT
  9.  *        R - Right SHIFT
  10.  *        A - ALT
  11.  *        C - CONTROL
  12.  *        S - SysRq (Caution: some systems may not like this one)
  13.  *
  14.  *        eg: LZC LR    (Install with LEFT+RIGHT SHIFT for hotkeys)
  15.  *
  16.  * Copyright 1990-1994 Dave Dunfield
  17.  * All rights reserved.
  18.  *
  19.  * Permission granted for personal (non-commercial) use only.
  20.  *
  21.  * Compile command: cc lzc -fop
  22.  */
  23. #include <stdio.h>
  24. #include <window.h>
  25. #include <tsr.h>
  26. #include <file.h>
  27.  
  28. char *port = "LPT1";
  29.  
  30. char *menu[] = {
  31.     "Control Normal",
  32.     "Control Inhibit",
  33.     "Eject One Page",
  34.     "Font Primary",
  35.     "Font Secondary",
  36.     "Line Wrap On",
  37.     "Line Wrap Off",
  38.     "Reset Printer",
  39.     "Self Test",
  40.     "Underline On",
  41.     "Underline Off",
  42.     "View Portrait",
  43.     "View Landscape",
  44.     "66 line mode",
  45.     "1  Copy",
  46.     "2  Copies",
  47.     "3  Copies",
  48.     "5  Copies",
  49.     "10 Copies",
  50.     "25 Copies",
  51.     "50 Copies",
  52.     0 };
  53.  
  54. char *funcs[] = {
  55.     "\x1BZ", "\x1BY",            /* Control NORMAL/INHIBIT */
  56.     "\f",                        /* Page eject */
  57.     "\x0F", "\x0E",                /* Select Primary/Secondary font */
  58.     "\x1B&s0C", "\x1B&s1C",        /* Line wrap ON/OFF */
  59.     "\x1BE", "\x1Bz",            /* Reset & Self test */
  60.     "\x1B&dD", "\x1B&d@",        /* Underline ON/OFF" */
  61.     "\x1B&l0O","\x1B&l1O",        /* View PORTRAIT/LANDSCAPE */
  62.     "\x1BE\x1B&l66p2e7.6c66F",    /* 66 line mode */
  63.     "\x1B&l1X","\x1B&l2X",        /* 1 & 2 copies */
  64.     "\x1B&l3X","\x1B&l5X",        /* 3 & 5 copies */
  65.     "\x1B&l10X","\x1B&l25X",    /* 10 & 25 copies */
  66.     "\x1B&l50X",                /* 50 copies */
  67.     0 };
  68.  
  69. int select = 0;
  70.  
  71. /*
  72.  * Main program
  73.  */
  74. laser()
  75. {
  76.     HANDLE fp;
  77.  
  78.     if(!(fp = open(port, F_WRITE)))
  79.         return;
  80.  
  81.     for(;;) {
  82.         if(wmenu(60, 1, WSAVE|WCOPEN|WBOX2|REVERSE, menu, &select)) {
  83.             close(fp);
  84.             return; }
  85.         lputs(funcs[select], fp); }
  86. }
  87.  
  88. /*
  89.  * Main program, either TSR or execute main tty program menu
  90.  */
  91. main(argc, argv)
  92.     int argc;
  93.     int *argv[];
  94. {
  95.     int hot_keys;
  96.     char *ptr;
  97.  
  98. /* If RAM-resident, print startup message & TSR */
  99.     if(argc > 1) {
  100.         fputs("Laser Commander\n\nCopyright 1990-1994 Dave Dunfield\nAll rights reserved.", stderr);
  101.         hot_keys = 0;
  102.         ptr = argv[1];
  103.         while(*ptr) switch(toupper(*ptr++)) {
  104.             case 'A' : hot_keys |= ALT;        break;
  105.             case 'C' : hot_keys |= CONTROL;    break;
  106.             case 'L' : hot_keys |= L_SHIFT;    break;
  107.             case 'R' : hot_keys |= R_SHIFT; break;
  108.             case 'S' : hot_keys |= SYS_REQ;    break;
  109.             default: abort("\n\nInvalid HOTKEY"); }
  110.         tsr(&laser, hot_keys, 2000); }
  111.  
  112. /* Not RAM-resident, execute the program */
  113.     laser();
  114. }
  115.